package com.lanchetech.user.service;


import com.lanchetech.bean.request.RoomReq;
import com.lanchetech.bean.request.RoomSpuReq;
import com.lanchetech.bean.request.WsSendToUserReq;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.QueryRecordResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.util.media.RtcTokenBuilder;
import com.lanchetech.bean.vo.RoomDetailVO;
import com.lanchetech.bean.vo.RoomSpuVO;
import com.lanchetech.bean.vo.RoomStatisticsVO;
import com.lanchetech.bean.vo.RoomVO;
import com.lanchetech.entity.Room;
import com.lanchetech.entity.RoomSpu;
import com.lanchetech.entity.User;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

public interface RoomService {

    ResultData<RoomDetailVO> getRoomDetail(User user, Long id);

    ResultData<Long> editRoom(Room room);

    BaseResp closeRoom(Long id);

    ResultData<BasePageResp<RoomVO>> getRoomPage(User user,RoomReq req);

    ResultData<BasePageResp<Room>> getMyRoomPage(RoomReq req);

    BaseResp deleteRoom(Long id);

    BaseResp addRoomSpu(Long roomId, Long spuId);

    BaseResp deleteRoomSpu(Long roomSpuId);

    BaseResp editRoomSpuSorts(RoomSpuReq req);

    BaseResp editRoomSpuStatus(Long roomSpuId, Byte status);

    ResultData<List<RoomSpuVO>> getRoomSpuList(Long roomId);

    BaseResp attentionAnchor(Long anchorUserId);

    BaseResp likeAnchor(Long roomId);

    BaseResp sendRoomMessage(WsSendToUserReq req);

    BaseResp startRecord(String cname,Long roomId);


    BaseResp stopRecord(String cname, Long roomId);

    ResultData<QueryRecordResp> queryRecord(Long roomId);

    String getLiveToken(User user, Long roomId, int role);

    ResultData<List<String>> getRoomPlayback(Long roomId);

    ResultData<List<RoomStatisticsVO>> getRoomStatistics(Long roomId);
}
